package org.jeecg.codegeneweb.mapsetfromwo;

import lombok.extern.slf4j.Slf4j;
import org.jeecg.codegeneweb.ParentMapSetFromWebModelVo;
import org.jeecg.codegeneweb.domian.column.ColumnVoDomain;
import org.jeecg.codegeneweb.vo.WebModelVo;
import org.jeecg.common.util.oConvertUtils;
import org.jeecgframework.codegenerate.generate.pojo.ColumnVo;
import org.jeecgframework.codegenerate.generate.pojo.TableVo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
public class TreeMapSet extends ParentMapSetFromWebModelVo {
    @Override
    protected void settableVo(Map<String, Object> hashMap, WebModelVo webModelVo){
//参考现有的代码
        TableVo tableVo=new TableVo();
        tableVo.setTableName(webModelVo.getTableVoDomain().getTableName());
        tableVo.setEntityName(webModelVo.getTableVoDomain().getEntityName());
        tableVo.setEntityPackage(webModelVo.getPackageName());
        tableVo.setFtlDescription(webModelVo.getTableVoDomain().getTableTxt());
        tableVo.setSearchFieldNum(-1);

        String formTemplate = webModelVo.getTableVoDomain().getFormTemplate();
        if (oConvertUtils.isEmpty(formTemplate)) {
            tableVo.setFieldRowNum(1);
        } else {
            tableVo.setFieldRowNum(Integer.parseInt(formTemplate));
        }

        HashMap map = new HashMap();
        map.put("scroll", webModelVo.getTableVoDomain().getScroll() == null ? "0" : webModelVo.getTableVoDomain().getScroll().toString());
        if ("Y".equals(webModelVo.getTableVoDomain().getIsTree())) {
            map.put("pidField", (webModelVo.getTableVoDomain()).getTreeParentIdField());
            map.put("hasChildren", (webModelVo.getTableVoDomain()).getTreeIdField());
            map.put("textField", (webModelVo.getTableVoDomain()).getTreeFieldname());
        }
        tableVo.setExtendParams(map);

        hashMap.put("tableVo", tableVo);
    }
    @Override
    protected void setCollection(Map<String, Object> hashMap, WebModelVo webModelVo){
        List<ColumnVoDomain> columnVoDomainList =webModelVo.getTableVoDomain().getColumnVoDomainList();
        List<ColumnVo> columnVoList=new ArrayList<>();
        for(ColumnVoDomain columnVoDomain : columnVoDomainList){
            ColumnVo columnVo=new ColumnVo();
            columnVo.setFieldName(columnVoDomain.getDbVo().getFieldName());
            System.out.println("当前正在执行的是:"+ columnVoDomain.getDbVo().getFieldName());
            log.info("当前正在执行的是:"+ columnVoDomain.getDbVo().getFieldName());;
            columnVo.setNullable(columnVoDomain.getDbVo().getDbIsNull().toString().equals("1")?"Y":"N");//.getNullable());
            columnVo.setFieldType(columnVoDomain.getDbVo().getFieldType());//.getDbType());
            columnVo.setFieldDbType(columnVoDomain.getDbVo().getDbType());//.getDbFieldName());
            columnVo.setFieldDbName(columnVoDomain.getDbVo().getDbFieldName());//.getFieldType());
            columnVo.setFiledComment(columnVoDomain.getDbVo().getDbFieldTxt());
            columnVo.setClassType(columnVoDomain.getPageVo().getFieldShowType());
            columnVo.setOptionType("");
            columnVo.setCharmaxLength("");
            columnVo.setPrecision(null);
            columnVo.setScale(null);
            columnVo.setClassType_row(columnVoDomain.getPageVo().getFieldShowType());
            columnVo.setDefaultVal(columnVoDomain.getDbVo().getDbDefaultVal());
            columnVo.setFieldLength(columnVoDomain.getDbVo().getDbLength());
            columnVo.setFieldHref("");
            columnVo.setFieldValidType(null);
            columnVo.setFieldDefault("");
            columnVo.setFieldOrderNum(columnVoDomain.getPageVo().getOrderNum());
            columnVo.setFieldShowType(columnVoDomain.getPageVo().getFieldShowType());
            columnVo.setIsKey(columnVoDomain.getDbVo().getDbIsKey().toString().equals("1")?"Y":"N");
            columnVo.setIsQuery(columnVoDomain.getPageVo().getIsQuery().toString().equals("1")?"Y":"N");
            columnVo.setIsShow(columnVoDomain.getPageVo().getIsShowForm().toString().equals("1")?"Y":"N");
            columnVo.setIsShowList(columnVoDomain.getPageVo().getIsShowList().toString().equals("1")?"Y":"N");
            columnVo.setQueryMode(columnVoDomain.getPageVo().getQueryMode());
            columnVo.setReadonly(columnVoDomain.getPageVo().getIsReadOnly().toString().equals("1")?"Y":"N");
            columnVo.setSort(columnVoDomain.getPageVo().getSortFlag());
            columnVo.setFieldOrderNum(columnVoDomain.getPageVo().getOrderNum());
            if(columnVoDomain.getValidateVo().getDictField()!=null){
                columnVo.setDictField(columnVoDomain.getValidateVo().getDictField().length()!=0? columnVoDomain.getValidateVo().getDictField().toString():"");
            }

            columnVo.setDictTable("");
            columnVo.setDictText("");
            columnVoList.add(columnVo);
        }
        List<ColumnVo> newaddedColumn=columnVoList.stream()
                .filter(x->x.getIsShowList().equalsIgnoreCase("Y")||x.getIsShow().equalsIgnoreCase("Y"))
                .collect(Collectors.toList());
        hashMap.put("originalColumns", columnVoList);
        hashMap.put("columns", columnVoList);

    }
}
